home *** CD-ROM | disk | FTP | other *** search
/ Aminet 19 / Aminet 19 (1997)(GTI - Schatztruhe)[!][Jun 1997].iso / Aminet / mods / misc / CUST_Agony_MON.lha / Agony_MON / Agony1.s < prev    next >
Text File  |  1997-04-06  |  4KB  |  255 lines

  1. *************************************************
  2. * Agony In Game Music 1 by Jeroen Tel (1990).    *
  3. * Adapted by Mr.STYCKX / Nicolas Pomarède    *
  4. *                        *
  5. * Original replay was in $6c3e.            *
  6. *                        *
  7. * EaglePlayer / Delitracker port : 06/04/97    *
  8. *    Volume                    *
  9. *    Balance                    *
  10. *    SubSong                    *
  11. *    SongEnd                    *
  12. *    EP_Voices                *
  13. *    EP_StructInit (Analyzer)        *
  14. * Uses Voices B, C, D                *
  15. *                        *    
  16. *************************************************
  17.  
  18.     opt    o+
  19.  
  20.     output    ram:CUST.Agony1_MON
  21.  
  22.  
  23. AGO_TEST    =        0    ; 0 => BUILD COMPLETE CUSTOM MODULE
  24.                     ; 1 => BUILD SMALL CODE FOR TESTING
  25.  
  26.     section    AGO,code_c
  27.  
  28.  
  29.  
  30.     incdir    "Include:"    include    "misc/DeliPlayer.i"
  31.     include    "misc/EaglePlayer.i"
  32.  
  33.  
  34.     IFEQ    AGO_TEST-0            ; COMPLETE VERSION
  35.  
  36.  
  37.     PLAYERHEADER PlayerTagArray
  38.  
  39.     dc.b '$VER: Agony InGame Music #1 (1990) custom player V1.0, '
  40.     dc.b 'ripped and adapted by Mr.STYCKX (04/97)',0
  41.  
  42.     EVEN
  43.  
  44. PlayerTagArray
  45.     dc.l    DTP_CustomPlayer,1        ; CustomPlayer - Tag (important !!!)
  46.     dc.l    DTP_Flags,PLYF_CUSTOM!PLYF_SONGEND
  47.  
  48.     dc.l    DTP_PlayerVersion,1<<16+0    ; v1.0
  49.     dc.l    EP_PlayerVersion,1
  50.     dc.l    DTP_PlayerName,PName
  51.     dc.l    DTP_Creator,CName
  52.  
  53.     dc.l    DTP_InitPlayer,InitPlay        ; alloc audio
  54.     dc.l    DTP_EndPlayer,EndPlay        ; free audio
  55.     dc.l    DTP_InitSound,AGO_init        ; init custom data
  56.     dc.l    DTP_EndSound,AGO_end        ; clear DMA
  57.  
  58.     dc.l    DTP_SubSongRange,AGO_SubSongRange
  59.  
  60.     dc.l    DTP_Interrupt,AGO_Play
  61.  
  62.     dc.l    DTP_Volume,AGO_Volume
  63.     dc.l    DTP_Balance,AGO_Volume
  64.  
  65.     dc.l    EP_Voices,AGO_SetVoices
  66.     dc.l    EP_StructInit,AGO_StructInit
  67.  
  68.     dc.l    EP_Flags,EPB_Voices!EPB_Analyzer!EPB_Volume!EPB_Balance!EPB_Songend
  69.  
  70.     dc.l    TAG_DONE
  71.  
  72.  
  73. PName    dc.b    "Agony InGame #1 v1.0",0
  74. CName    dc.b    "Music by Jeroen Tel / MON (1990).",$a
  75.     dc.b    "Adapted by Mr.STYCKX (06/04/97)",0
  76.  
  77.     EVEN
  78.  
  79.  
  80.     ELSEIF                ; TESTVERSION
  81.  
  82.     bra    AGO_Debug
  83.  
  84.     ENDC
  85.  
  86.  
  87.  
  88. ;--------------- Constant depending on the module
  89.  
  90.  
  91. ABS_START    =    $6c3e        ; original start
  92.  
  93. INIT_        =    ABS_START    ; init rout
  94. VBL_        =    $6cc2        ; replay rout
  95.  
  96. DMAON_        =    $6dda        ; set DMA ON 
  97. DMAOFF_        =    $6e6c        ; set DMA OFF
  98.  
  99. PER_        =    $6dae        ; set Per
  100. VOL_        =    $6dbc        ; set Vol
  101. START_        =    $6fb2        ; set Start
  102. LEN_        =    $6fbc        ; set Len
  103. RSTART_        =    $6e02        ; set Repeat Start
  104. RLEN_        =    $6e12        ; set Repeat Len
  105.  
  106.  
  107.  
  108.  
  109.  
  110. RelocMus
  111.     tst.w    RelocFlag
  112.     bne.s    .done
  113.     lea    MusicData(pc),a0
  114.     move.l    a0,d0
  115.     sub.l    #ABS_START,d0
  116.  
  117.     add.l    d0,$73a4-ABS_START(a0)
  118.     add.l    d0,$73ac-ABS_START(a0)
  119.     add.l    d0,$73b4-ABS_START(a0)
  120.     add.l    d0,$73bc-ABS_START(a0)
  121.     add.l    d0,$73c4-ABS_START(a0)
  122.  
  123.     lea    $73cc-ABS_START(a0),a1
  124.     lea    $75cc-ABS_START(a0),a2
  125. .loop    add.l    d0,(a1)+
  126.     cmp.l    a2,a1
  127.     blt.s    .loop
  128.  
  129.     st    RelocFlag
  130. .done    rts
  131.  
  132. RelocFlag    dc.w    0
  133.  
  134.  
  135.  
  136. ;------ Set DMA ON
  137.  
  138. SetON    and.w    AGO_DMA_EP(pc),d0
  139.     move.w    d0,$96(a5)
  140.     rts
  141.  
  142.  
  143.  
  144. ;------ Set DMA OFF
  145.  
  146. SetOFF    move.w    d1,$96(a5)
  147.     rts
  148.  
  149.  
  150.  
  151. ;------ Set DMA Per
  152.  
  153. SetPer    movem.l    d7/a6,-(sp)
  154.     lsl.w    #2,d7
  155.     lea    AGO_StructA(pc),a6
  156.     move.l    (a6,d7.w),a6
  157.     move.w    d2,UPS_Voice1Per(a6)
  158.     move.w    d2,$a6(a4)
  159.     movem.l    (sp)+,d7/a6
  160.     rts
  161.  
  162.  
  163.  
  164. ;------ Set DMA Vol
  165.  
  166. SetVol    movem.l    d7/a6,-(sp)
  167.     lsl.w    #2,d7
  168.     lea    AGO_StructA(pc),a6
  169.     move.l    (a6,d7.w),a6
  170.     move.w    d0,UPS_Voice1Vol(a6)
  171.     lea    AGO_MasterVolA(pc),a6
  172.     lsr.w    #1,d7            ; addresses words
  173.     mulu    (a6,d7.w),d0
  174.     lsr.w    #6,d0
  175.     move.w    d0,$a8(a4)
  176.     movem.l    (sp)+,d7/a6
  177.     rts
  178.  
  179.  
  180.  
  181. ;------ Set DMA Start
  182.  
  183. SetStart
  184.     movem.l    d7/a6,-(sp)
  185.     lsl.w    #2,d7
  186.     lea    AGO_StructA(pc),a6
  187.     move.l    (a6,d7.w),a6
  188.     move.l    d1,UPS_Voice1Adr(a6)
  189.     move.l    d1,$a0(a4)
  190.     movem.l    (sp)+,d7/a6
  191.     rts
  192.  
  193.  
  194.  
  195. ;------ Set DMA Len
  196.  
  197. SetLen    movem.l    d7/a6,-(sp)
  198.     lsl.w    #2,d7
  199.     lea    AGO_StructA(pc),a6
  200.     move.l    (a6,d7.w),a6
  201.     move.w    d1,UPS_Voice1Len(a6)
  202.     move.w    d1,$a4(a4)
  203.     movem.l    (sp)+,d7/a6
  204.     rts
  205.  
  206.  
  207.  
  208. ;------ Set DMA Repeat Start
  209.  
  210. SetRStart
  211.     movem.l    d7/a6,-(sp)
  212.     lsl.w    #2,d7
  213.     lea    AGO_StructA(pc),a6
  214.     move.l    (a6,d7.w),a6
  215. ;;    move.l    d1,UPS_Voice1Adr(a6)
  216.     move.l    d1,$a0(a4)
  217.     movem.l    (sp)+,d7/a6
  218.     rts
  219.  
  220.  
  221. ;------ Set DMA Repeat Len
  222.  
  223. SetRLen    movem.l    d7/a6,-(sp)
  224.     lsl.w    #2,d7
  225.     lea    AGO_StructA(pc),a6
  226.     move.l    (a6,d7.w),a6
  227. ;;    move.w    d1,UPS_Voice1Len(a6)
  228.     move.w    d1,$a4(a4)
  229.     movem.l    (sp)+,d7/a6
  230.     rts
  231.  
  232.  
  233.  
  234.  
  235.  
  236.  
  237. ;---------------------------------------------------------------
  238. ; Common part for custom module
  239.  
  240.     include    b:Agony_MON/AgonyCommon.s
  241.  
  242.  
  243.  
  244. ;---------------------------------------------------------------
  245. ; Replay + music data
  246.  
  247.     dc.l    'MONS','TART'
  248. MusicData
  249.     incbin    b:Agony_MON/Agony1.bin
  250.  
  251.  
  252.  
  253. ;---------------------------------------------------------------
  254. ; END
  255.